
package com.udc.medLine.transaction;

import java.util.List;

import com.udc.medLine.entity.CondicaoVO;
import com.udc.medLine.entity.Marca;
import com.udc.medLine.entity.Modelo;
import com.udc.medLine.factory.FactoryMarca;
import com.udc.medLine.factory.FactoryModelo;
import com.udc.medLine.persistence.Bd;

public class TransactionModelo {

	private Modelo modelo;
	private Marca marca;
	private List listModelo;
	private List listMarca;
	private Bd banco;
	
	/**
	 * 
	 */
	public TransactionModelo() {
		super();
		modelo = new Modelo();
		marca = new Marca();
		try{
			banco = Bd.getInstance();
		}
		catch(Exception e){
			e.printStackTrace();
		}
		// TODO Stub de construtor gerado automaticamente
	}

	public Modelo getModelo() {
		return modelo;
	}

	public void setModelo(Modelo new_modelo) {
		this.modelo = new_modelo;
	}

	public void remover(Modelo nModelo) throws Exception {
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			
			modelo.setId(nModelo.getId());
			factory.setModelo(modelo);
			factory.delete();
		banco.commit();
	}

	public void inserir(Modelo nModelo) throws Exception {
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			FactoryMarca factoryMarca = new FactoryMarca();
			modelo.setNome(nModelo.getNome());
		
			marca.setId(nModelo.getMarca().getId());
			factoryMarca.setMarca(marca);
			marca = factoryMarca.obterMarca();
				
			modelo.setMarca(marca);
			factory.setModelo(modelo);
			factory.insert();
		banco.commit();
	}

	public void atualizar(Modelo nModelo) throws Exception {
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			FactoryMarca factoryMarca = new FactoryMarca();
			modelo.setId(nModelo.getId());
			modelo.setNome(nModelo.getNome());

			marca.setId(nModelo.getMarca().getId());
			factoryMarca.setMarca(marca);
			marca = factoryMarca.obterMarca();
					
			modelo.setMarca(marca);	
			factory.setModelo(modelo);
			factory.update();
		banco.commit();
	}


	public void obterListaModelo(String campo, String valor) throws Exception{
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			factory.setModelo(new Modelo());
			listModelo = factory.getModelo(campo,valor);
		banco.commit();
	}
	
	public void obterListaModelo() throws Exception{
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			factory.setModelo(new Modelo());
			listModelo = factory.getListaModelos();
		banco.commit();
	}
	
	public void obterModelo(Modelo nModelo) throws Exception{
		banco.beginTransaction();
			FactoryModelo factory = new FactoryModelo();
			modelo.setId(nModelo.getId());
			factory.setModelo(modelo);
			modelo = factory.obterModelo();
		banco.commit();
	}
	
	public void obterListaMarca() throws Exception{
		banco.beginTransaction();
			FactoryMarca factory = new FactoryMarca();
			listMarca = factory.getListaMarca();
		banco.commit();
	}
	
	/**
	 * @return
	 */
	public List getListModelo() {
		return listModelo;
	}

	/**
	 * @param list
	 */
	public void setListModelo(List list) {
		listModelo = list;
	}

	/**
	 * @return
	 */
	public Marca getMarca() {
		return marca;
	}

	/**
	 * @param marca
	 */
	public void setMarca(Marca marca) {
		this.marca = marca;
	}

	/**
	 * @return Returns the listMarca.
	 */
	public List getListMarca() {
		return listMarca;
	}
	/**
	 * @param listMarca The listMarca to set.
	 */
	public void setListMarca(List listMarca) {
		this.listMarca = listMarca;
	}
	public List<Modelo> search(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		FactoryModelo factory = new FactoryModelo();
		listModelo= factory.search(condicao);
		banco.commit();
		return listModelo;
	}
}
